package com.sayice.robotconflict.model.receive

import com.sayice.robotconflict.model.property.Coord
import com.sayice.robotconflict.model.property.Direction

/**
 * 对局机器人信息
 *
 * @author shubing
 */
data class GameRobotInfo(
    /**
     * 机器人名
     */
    val name: String,

    /**
     * 所属玩家 ID
     */
    val playerId: String,

    /**
     * 在玩家携带机器人中的序号 (从0开始)
     */
    val seq: Int,

    /**
     * 是否被控制
     */
    val controlled: Boolean,

    /**
     * 血量
     */
    val blood: Int,

    /**
     * 坐标
     */
    val coord: Coord,

    /**
     * 方向
     */
    val direction: Direction,

    /**
     * 攻击偏移
     */
    val attackOffset: Coord
) {
    // 在机器人控制切换按钮组中使用了 ==，故需要重写 hashCode 和 equals
    override fun hashCode(): Int {
        var result = playerId.hashCode()
        result = 31 * result + seq
        return result
    }

    override fun equals(other: Any?): Boolean {
        if (this === other) return true
        if (javaClass != other?.javaClass) return false
        other as GameRobotInfo
        if (playerId != other.playerId) return false
        if (seq != other.seq) return false
        return true
    }
}